package icu.zhhll.excel.util;

import com.aspose.pdf.Document;
import com.aspose.pdf.optimization.OptimizationOptions;

/**
 * pdf压缩
 *
 * @author zh
 * @date 2023/9/12 14:41
 */
public class PdfUtils {

    /**
     * pfd压缩
     *
     * @param source  文件来源
     * @param target  压缩后保存位置
     * @param quality 压缩比  0 到100可选，越低压缩比越大
     */
    public static void compress(String source, String target, int quality) {
        Document doc = new Document(source);
        //设置压缩属性
        OptimizationOptions opt = new OptimizationOptions();
        //删除PDF不必要的对象
        opt.setRemoveUnusedObjects(true);
        //链接重复流
        opt.setLinkDuplcateStreams(false);
        //删除未使用的流
        opt.setRemoveUnusedStreams(false);
        //删除不必要的字体
        opt.setUnembedFonts(true);
        //压缩PDF中的图片
        opt.getImageCompressionOptions().setCompressImages(true);
        //图片压缩比， 0 到100可选，越低压缩比越大
        opt.getImageCompressionOptions().setImageQuality(quality);
        doc.optimizeResources(opt);
        //优化web的PDF文档
        doc.optimize();
        doc.save(target);
    }

    /**
     * pfd压缩
     *
     * @param source 文件来源
     * @param target 压缩后保存位置
     */
    public static void compress(String source, String target) {
        compress(source, target, 50);
    }
}
